<!DOCTYPE html>
<html lang="en" dir="auto">

<head><meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="index, follow">
<title>开放原子开源活动贡献榜开源项目协作教程 | PaperMod</title>
<meta name="keywords" content="">
<meta name="description" content="根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程">
<meta name="author" content="Kyle">
<link rel="canonical" href="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/open-atom-contributor-leaderboard/">
<link crossorigin="anonymous" href="/atomgit-blog/assets/css/stylesheet.5ff2630c4d1b3e25bc21f0ecd96681dbcf58219e741fa627857820b5485cb770.css" integrity="sha256-X/JjDE0bPiW8IfDs2WaB289YIZ50H6YnhXggtUhct3A=" rel="preload stylesheet" as="style">
<link rel="icon" href="https://pagesorg.atomgit.net/atomgit-blog/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="https://pagesorg.atomgit.net/atomgit-blog/favicon-16x16.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://pagesorg.atomgit.net/atomgit-blog/favicon-32x32.png">
<link rel="apple-touch-icon" href="https://pagesorg.atomgit.net/atomgit-blog/apple-touch-icon.png">
<link rel="mask-icon" href="https://pagesorg.atomgit.net/atomgit-blog/safari-pinned-tab.svg">
<meta name="theme-color" content="#2e2e33">
<meta name="msapplication-TileColor" content="#2e2e33">
<link rel="alternate" hreflang="en" href="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/open-atom-contributor-leaderboard/">
<noscript>
    <style>
        #theme-toggle,
        .top-link {
            display: none;
        }

    </style>
    <style>
        @media (prefers-color-scheme: dark) {
            :root {
                --theme: rgb(29, 30, 32);
                --entry: rgb(46, 46, 51);
                --primary: rgb(218, 218, 219);
                --secondary: rgb(155, 156, 157);
                --tertiary: rgb(65, 66, 68);
                --content: rgb(196, 196, 197);
                --code-block-bg: rgb(46, 46, 51);
                --code-bg: rgb(55, 56, 62);
                --border: rgb(51, 51, 51);
            }

            .list {
                background: var(--theme);
            }

            .list:not(.dark)::-webkit-scrollbar-track {
                background: 0 0;
            }

            .list:not(.dark)::-webkit-scrollbar-thumb {
                border-color: var(--theme);
            }
        }

    </style>
</noscript>
  

<meta property="og:title" content="开放原子开源活动贡献榜开源项目协作教程" />
<meta property="og:description" content="根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/open-atom-contributor-leaderboard/" />
<meta property="og:image" content="https://pagesorg.atomgit.net/atomgit-blog/images/papermod-cover.png" />
<meta property="article:section" content="posts" />
<meta property="article:published_time" content="2024-05-01T00:00:00+00:00" />
<meta property="article:modified_time" content="2024-05-01T00:00:00+00:00" />


<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:image" content="https://pagesorg.atomgit.net/atomgit-blog/images/papermod-cover.png" />
<meta name="twitter:title" content="开放原子开源活动贡献榜开源项目协作教程"/>
<meta name="twitter:description" content="根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程"/>


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position":  1 ,
      "name": "Posts",
      "item": "https://pagesorg.atomgit.net/atomgit-blog/posts/"
    }, 
    {
      "@type": "ListItem",
      "position":  2 ,
      "name": "PaperMod",
      "item": "https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/"
    }, 
    {
      "@type": "ListItem",
      "position":  3 ,
      "name": "开放原子开源活动贡献榜开源项目协作教程",
      "item": "https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/open-atom-contributor-leaderboard/"
    }
  ]
}
</script>
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "开放原子开源活动贡献榜开源项目协作教程",
  "name": "开放原子开源活动贡献榜开源项目协作教程",
  "description": "根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程",
  "keywords": [
    
  ],
  "articleBody": " 项目地址：https://atomgit.com/lijin/open-atom-contributor-leaderboard/ 根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程 0、前提条件 可能有的人是首次使用，那么我们可以尽量全面介绍，照顾到细节。 为了简化操作的复杂度，尽量全部用 GUI 的形式来操作。\nWindows11 Python3 NodeJS v20.12.2 Git Client：OpenLinkSaaS 1、安装所需软件和运行环境配置 1）安装 Python 推荐使用 Anaconda 进行 Python 开发，它集成了 Python 解释器和常用的科学计算库，方便管理环境和软件包，尤其适合数据科学、机器学习等领域。\n下载地址 https://www.python.org/downloads/ 双击安装 Python3 软件 验证 Python 安装成功 2）安装NodeJS 下载地址 https://nodejs.org/dist/v20.12.2/node-v20.12.2-x64.msi\n双击安装 NodeJS\n验证 NodeJS 安装成功 3）安装OpenLinkSaaS 下载地址：https://www.linksaas.pro/download 双击安装 2、下载开源项“开放原子开源活动贡献榜” 2.1、用你的 AtomGit 登录 OpenLinkSaaS 2.2、设置 SSH，让你的本地电脑和AtomGit 进行通信 生成 SSH Key 复制 SSH Key 公钥 在 AtomGit 中设置此公钥 2.3、推荐使用 SSH 方式下载克隆 3、数据转换 进入“开放原子开源活动贡献榜”项目的“src”目录 在“src”目录下，打开终端 安装python 项目的依赖包：pandas pip install pandas 执行命令python3 .\\convert.py 4、项目test \u0026 build 1） test\n进入“开放原子开源活动贡献榜”根目录，并且打开终端\n注意，以下操作都在 master分支操作。\n安装 Nodejs 的 NPM 包依赖，执行下面命令 npm install\n上线前本地查看数据和站点的渲染，执行命令 用于在开发模式下运行应用。 打开 http://localhost:3000 在浏览器中查看。如果你进行了编辑，页面将重新加载。 你还将在控制台中看到任何 lint 错误。\nnpm start\n2） 推送到 master 分支\n此时从本地看数据和页面如果都没有什么问题，那么可以先推送到 master 分支。\n这里推荐两种操作方式二选一。\n方式一：用 OpenLinkSaaS 操作\n添加并提交有变化的文件 把提交了变更的数据推送到 AtomGit 远端仓库 检查更新成功 方式二：用 Git 命令操纵\n分别执行命令\ngit add ./ git commit -m '更新说明' git push 3） build\nnpm run build，此时会产生的静态文件都将会在 “build目录\"中。 4） 切换到build分支，执行静态文件编译\n从此处开始，操作都将会在build 分支操作。\n4-1）这里推荐两种操作方式二选一。\n方式一：用 OpenLinkSaaS 操作 接着手动删除“build目录”和“.gitignore”文件之外的所有文件。 手动把“build目录”里面的所有内容都移动到“build目录”之外，也就是和“build目录”同级别。再把“build目录”删除。 推送到远端 AtomGit 上的 build 分支\n添加\u0026提交 把提交了变更的数据推送到 AtomGit 远端仓库 检查更新成功 方式二：用 Git 命令操作\ngit checkout build 接着手动删除“build目录”和“.gitignore”文件之外的所有文件。 手动把“build目录”里面的所有内容都移动到“build目录”之外，也就是和“build目录”同级别。再把“build目录”删除。 推送到远端 AtomGit 上的build 分支\ngit add . git commit -m '更新说明' git push 检查更新成功 5、访问远端仓库地址查看更新 访问仓库地址，查看是否更新了数据。 如果没有请进入仓库的“设置”-\u003e“Pages”,手动点击下“保存”按钮，将会更快的刷新最新的数据。如下图。 。 以上。\n",
  "wordCount" : "182",
  "inLanguage": "en",
  "image": "https://pagesorg.atomgit.net/atomgit-blog/images/papermod-cover.png","datePublished": "2024-05-01T00:00:00Z",
  "dateModified": "2024-05-01T00:00:00Z",
  "author":{
    "@type": "Person",
    "name": "Kyle"
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/open-atom-contributor-leaderboard/"
  },
  "publisher": {
    "@type": "Organization",
    "name": "PaperMod",
    "logo": {
      "@type": "ImageObject",
      "url": "https://pagesorg.atomgit.net/atomgit-blog/favicon.ico"
    }
  }
}
</script>
</head>

<body class="" id="top">
<script>
    if (localStorage.getItem("pref-theme") === "dark") {
        document.body.classList.add('dark');
    } else if (localStorage.getItem("pref-theme") === "light") {
        document.body.classList.remove('dark')
    } else if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
        document.body.classList.add('dark');
    }

</script>

<header class="header">
    <nav class="nav">
        <div class="logo">
            <a href="https://pagesorg.atomgit.net/atomgit-blog/" accesskey="h" title="PaperMod (Alt + H)">PaperMod</a>
            <div class="logo-switches">
                <button id="theme-toggle" accesskey="t" title="(Alt + T)">
                    <svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
                        stroke-linejoin="round">
                        <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
                    </svg>
                    <svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
                        fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
                        stroke-linejoin="round">
                        <circle cx="12" cy="12" r="5"></circle>
                        <line x1="12" y1="1" x2="12" y2="3"></line>
                        <line x1="12" y1="21" x2="12" y2="23"></line>
                        <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
                        <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
                        <line x1="1" y1="12" x2="3" y2="12"></line>
                        <line x1="21" y1="12" x2="23" y2="12"></line>
                        <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
                        <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
                    </svg>
                </button>
                <ul class="lang-switch"><li>|</li>
                    <li>
                        <a href="https://pagesorg.atomgit.net/atomgit-blog/fr/" title="French"
                            aria-label=":fr:">🇫🇷</a>
                    </li>
                    <li>
                        <a href="https://pagesorg.atomgit.net/atomgit-blog/fa/" title="Fa"
                            aria-label="Fa">Fa</a>
                    </li>
                </ul>
            </div>
        </div>
        <ul id="menu">
            <li>
                <a href="https://pagesorg.atomgit.net/atomgit-blog/archives" title="Archive">
                    <span>Archive</span>
                </a>
            </li>
            <li>
                <a href="https://pagesorg.atomgit.net/atomgit-blog/search/" title="Search (Alt &#43; /)" accesskey=/>
                    <span>Search</span>
                </a>
            </li>
            <li>
                <a href="https://pagesorg.atomgit.net/atomgit-blog/tags/" title="Tags">
                    <span>Tags</span>
                </a>
            </li>
            <li>
                <a href="https://github.com/adityatelange/hugo-PaperMod/wiki/" title="WiKi">
                    <span>WiKi</span>&nbsp;
                    <svg fill="none" shape-rendering="geometricPrecision" stroke="currentColor" stroke-linecap="round"
                        stroke-linejoin="round" stroke-width="2.5" viewBox="0 0 24 24" height="12" width="12">
                        <path d="M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6"></path>
                        <path d="M15 3h6v6"></path>
                        <path d="M10 14L21 3"></path>
                    </svg>
                </a>
            </li>
        </ul>
    </nav>
</header>
<main class="main">

<article class="post-single">
  <header class="post-header">
    <div class="breadcrumbs"><a href="https://pagesorg.atomgit.net/atomgit-blog/">Home</a>&nbsp;»&nbsp;<a href="https://pagesorg.atomgit.net/atomgit-blog/posts/">Posts</a>&nbsp;»&nbsp;<a href="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/">PaperMod</a></div>
    <h1 class="post-title entry-hint-parent">
      开放原子开源活动贡献榜开源项目协作教程
    </h1>
    <div class="post-description">
      根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程
    </div>
    <div class="post-meta"><span title='2024-05-01 00:00:00 +0000 UTC'>May 1, 2024</span>&nbsp;·&nbsp;1 min&nbsp;·&nbsp;Kyle&nbsp;|&nbsp;<a href="https://github.com/adityatelange/hugo-PaperMod/tree/exampleSite/content/posts/papermod/open-atom-contributor-leaderboard/index.md" rel="noopener noreferrer" target="_blank">Suggest Changes</a>

</div>
  </header> <div class="toc">
    <details  open>
        <summary accesskey="c" title="(Alt + C)">
            <span class="details">Table of Contents</span>
        </summary>

        <div class="inner"><ul>
                <li>
                    <a href="#%e6%a0%b9%e6%8d%ae%e6%ad%a4%e9%a1%b9%e7%9b%ae%e7%9a%84-readmemd-%e6%96%87%e4%bb%b6%e9%87%8c%e9%9d%a2%e7%9a%84%e9%a1%b9%e7%9b%ae%e4%bd%bf%e7%94%a8%e6%92%b0%e5%86%99%e4%b8%80%e7%af%87%e5%8f%af%e4%bb%a5%e8%ae%a9%e6%9b%b4%e5%a4%9a%e9%9d%9e%e6%8a%80%e6%9c%af%e5%90%8c%e5%ad%a6%e8%83%bd%e7%8e%a9%e8%bd%ac%e7%9a%84%e6%95%99%e7%a8%8b" aria-label="根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程">根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程</a><ul>
                        
                <li>
                    <a href="#0%e5%89%8d%e6%8f%90%e6%9d%a1%e4%bb%b6" aria-label="0、前提条件">0、前提条件</a></li>
                <li>
                    <a href="#1%e5%ae%89%e8%a3%85%e6%89%80%e9%9c%80%e8%bd%af%e4%bb%b6%e5%92%8c%e8%bf%90%e8%a1%8c%e7%8e%af%e5%a2%83%e9%85%8d%e7%bd%ae" aria-label="1、安装所需软件和运行环境配置">1、安装所需软件和运行环境配置</a><ul>
                        
                <li>
                    <a href="#1%e5%ae%89%e8%a3%85-python" aria-label="1）安装 Python">1）安装 Python</a></li>
                <li>
                    <a href="#2%e5%ae%89%e8%a3%85nodejs" aria-label="2）安装NodeJS">2）安装NodeJS</a></li>
                <li>
                    <a href="#3%e5%ae%89%e8%a3%85openlinksaas" aria-label="3）安装OpenLinkSaaS">3）安装OpenLinkSaaS</a></li></ul>
                </li>
                <li>
                    <a href="#2%e4%b8%8b%e8%bd%bd%e5%bc%80%e6%ba%90%e9%a1%b9%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c" aria-label="2、下载开源项“开放原子开源活动贡献榜”">2、下载开源项“开放原子开源活动贡献榜”</a><ul>
                        
                <li>
                    <a href="#21%e7%94%a8%e4%bd%a0%e7%9a%84-atomgit-%e7%99%bb%e5%bd%95-openlinksaas" aria-label="2.1、用你的 AtomGit 登录 OpenLinkSaaS">2.1、用你的 AtomGit 登录 OpenLinkSaaS</a></li>
                <li>
                    <a href="#22%e8%ae%be%e7%bd%ae-ssh%e8%ae%a9%e4%bd%a0%e7%9a%84%e6%9c%ac%e5%9c%b0%e7%94%b5%e8%84%91%e5%92%8catomgit-%e8%bf%9b%e8%a1%8c%e9%80%9a%e4%bf%a1" aria-label="2.2、设置 SSH，让你的本地电脑和AtomGit 进行通信">2.2、设置 SSH，让你的本地电脑和AtomGit 进行通信</a></li>
                <li>
                    <a href="#23%e6%8e%a8%e8%8d%90%e4%bd%bf%e7%94%a8-ssh-%e6%96%b9%e5%bc%8f%e4%b8%8b%e8%bd%bd%e5%85%8b%e9%9a%86" aria-label="2.3、推荐使用 SSH 方式下载克隆">2.3、推荐使用 SSH 方式下载克隆</a></li></ul>
                </li>
                <li>
                    <a href="#3%e6%95%b0%e6%8d%ae%e8%bd%ac%e6%8d%a2" aria-label="3、数据转换">3、数据转换</a><ul>
                        <ul>
                        
                <li>
                    <a href="#%e8%bf%9b%e5%85%a5%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e9%a1%b9%e7%9b%ae%e7%9a%84src%e7%9b%ae%e5%bd%95" aria-label="进入“开放原子开源活动贡献榜”项目的“src”目录">进入“开放原子开源活动贡献榜”项目的“src”目录</a></li>
                <li>
                    <a href="#%e5%9c%a8src%e7%9b%ae%e5%bd%95%e4%b8%8b%e6%89%93%e5%bc%80%e7%bb%88%e7%ab%af" aria-label="在“src”目录下，打开终端">在“src”目录下，打开终端</a></li>
                <li>
                    <a href="#%e5%ae%89%e8%a3%85python-%e9%a1%b9%e7%9b%ae%e7%9a%84%e4%be%9d%e8%b5%96%e5%8c%85pandas" aria-label="安装python 项目的依赖包：pandas">安装python 项目的依赖包：pandas</a></li>
                <li>
                    <a href="#%e6%89%a7%e8%a1%8c%e5%91%bd%e4%bb%a4python3-convertpy" aria-label="执行命令python3 .\convert.py">执行命令python3 .\convert.py</a></li></ul>
                    </ul>
                </li>
                <li>
                    <a href="#4%e9%a1%b9%e7%9b%aetest--build" aria-label="4、项目test &amp; build">4、项目test &amp; build</a></li>
                <li>
                    <a href="#5%e8%ae%bf%e9%97%ae%e8%bf%9c%e7%ab%af%e4%bb%93%e5%ba%93%e5%9c%b0%e5%9d%80%e6%9f%a5%e7%9c%8b%e6%9b%b4%e6%96%b0" aria-label="5、访问远端仓库地址查看更新">5、访问远端仓库地址查看更新</a>
                </li>
            </ul>
            </li>
            </ul>
        </div>
    </details>
</div>

  <div class="post-content"><!-- # “开放原子开源活动贡献榜”开源项目协作教程 -->
<ul>
<li>项目地址：https://atomgit.com/lijin/open-atom-contributor-leaderboard/</li>
</ul>
<h2 id="根据此项目的-readmemd-文件里面的项目使用撰写一篇可以让更多非技术同学能玩转的教程">根据此项目的 README.md 文件里面的“项目使用”撰写一篇可以让更多非技术同学能玩转的教程<a hidden class="anchor" aria-hidden="true" href="#根据此项目的-readmemd-文件里面的项目使用撰写一篇可以让更多非技术同学能玩转的教程">#</a></h2>
<h3 id="0前提条件">0、前提条件<a hidden class="anchor" aria-hidden="true" href="#0前提条件">#</a></h3>
<blockquote>
<p>可能有的人是首次使用，那么我们可以尽量全面介绍，照顾到细节。
为了简化操作的复杂度，尽量全部用 GUI 的形式来操作。</p>
</blockquote>
<ul>
<li>Windows11</li>
<li>Python3</li>
<li>NodeJS v20.12.2</li>
<li>Git Client：OpenLinkSaaS</li>
</ul>
<h3 id="1安装所需软件和运行环境配置">1、安装所需软件和运行环境配置<a hidden class="anchor" aria-hidden="true" href="#1安装所需软件和运行环境配置">#</a></h3>
<h4 id="1安装-python">1）安装 Python<a hidden class="anchor" aria-hidden="true" href="#1安装-python">#</a></h4>
<blockquote>
<p>推荐使用 Anaconda 进行 Python 开发，它集成了 Python 解释器和常用的科学计算库，方便管理环境和软件包，尤其适合数据科学、机器学习等领域。</p>
</blockquote>
<ul>
<li>下载地址 <a href="https://www.python.org/downloads/">https://www.python.org/downloads/</a></li>
<li>双击安装 Python3 软件</li>
</ul>
<p><img loading="lazy" src="images/11ff389b-91be-4834-99fc-53d607b55a83.png" alt="image.png"  />

<img loading="lazy" src="images/ff30dd6c-77a6-4cfb-a828-d7051baffd90.png" alt="image.png"  />

<img loading="lazy" src="images/74b6528d-781e-447c-9480-c1a75829988e.png" alt="image.png"  />
</p>
<ul>
<li>验证 Python 安装成功</li>
</ul>
<p><img loading="lazy" src="images/b766e61c-9e18-4c1a-8233-13a098995aeb.png" alt="image.png"  />
</p>
<h4 id="2安装nodejs">2）安装NodeJS<a hidden class="anchor" aria-hidden="true" href="#2安装nodejs">#</a></h4>
<ul>
<li>
<p>下载地址 <a href="https://nodejs.org/dist/v20.12.2/node-v20.12.2-x64.msi">https://nodejs.org/dist/v20.12.2/node-v20.12.2-x64.msi</a></p>
</li>
<li>
<p>双击安装 NodeJS</p>
</li>
</ul>
<p><img loading="lazy" src="images/fcd8eef9-802e-4197-8434-2e20e044fd90.png" alt="image.png"  />

<img loading="lazy" src="images/1278c0fc-9ef1-4252-a472-ef1dd7f0a348.png" alt="image.png"  />

<img loading="lazy" src="images/26dc2062-6d89-4a7e-8591-5c7e03af87d3.png" alt="image.png"  />

<img loading="lazy" src="images/9d3b6572-418b-4583-96e0-b6cbaa6c18da.png" alt="image.png"  />
</p>
<ul>
<li>验证 NodeJS 安装成功</li>
</ul>
<p><img loading="lazy" src="images/c2e39014-e93a-4813-bc22-910ec16b16cf.png" alt="image.png"  />
</p>
<h4 id="3安装openlinksaas">3）安装OpenLinkSaaS<a hidden class="anchor" aria-hidden="true" href="#3安装openlinksaas">#</a></h4>
<ul>
<li>下载地址：https://www.linksaas.pro/download</li>
<li>双击安装</li>
</ul>
<p><img loading="lazy" src="images/3d961785-cd17-473c-bc66-24ef84ee2d17.png" alt="image.png"  />

<img loading="lazy" src="images/3a963727-c6d3-406a-88d9-54d8dcc05dde.png" alt="image.png"  />

<img loading="lazy" src="images/9016e67b-7072-4e3f-890c-e99f4f83a11c.png" alt="image.png"  />
</p>
<h3 id="2下载开源项开放原子开源活动贡献榜">2、下载开源项“开放原子开源活动贡献榜”<a hidden class="anchor" aria-hidden="true" href="#2下载开源项开放原子开源活动贡献榜">#</a></h3>
<h4 id="21用你的-atomgit-登录-openlinksaas">2.1、用你的 AtomGit 登录 OpenLinkSaaS<a hidden class="anchor" aria-hidden="true" href="#21用你的-atomgit-登录-openlinksaas">#</a></h4>
<p><img loading="lazy" src="images/ce119318-51a0-4017-a5fc-0e02fb91300a.png" alt="image.png"  />

<img loading="lazy" src="images/77493271-e116-455d-a579-139c87fe4133.png" alt="image.png"  />
</p>
<h4 id="22设置-ssh让你的本地电脑和atomgit-进行通信">2.2、设置 SSH，让你的本地电脑和AtomGit 进行通信<a hidden class="anchor" aria-hidden="true" href="#22设置-ssh让你的本地电脑和atomgit-进行通信">#</a></h4>
<ul>
<li>生成 SSH Key</li>
</ul>
<p><img loading="lazy" src="images/e47c0605-4b15-4818-ae05-4d73e9f66e5c.png" alt="image.png"  />
</p>
<ul>
<li>复制 SSH Key 公钥</li>
</ul>
<p><img loading="lazy" src="images/f3beb57b-453f-4472-91f9-9d7bd6558164.png" alt="image.png"  />
</p>
<ul>
<li>在 AtomGit 中设置此公钥</li>
</ul>
<p><img loading="lazy" src="images/0aa714c4-6ad3-4b9c-a179-fef82658acfb.png" alt="image.png"  />
</p>
<h4 id="23推荐使用-ssh-方式下载克隆">2.3、推荐使用 SSH 方式下载克隆<a hidden class="anchor" aria-hidden="true" href="#23推荐使用-ssh-方式下载克隆">#</a></h4>
<p><img loading="lazy" src="images/f514dc0f-ad77-40a3-abb1-deb3a5c2108e.png" alt="image.png"  />

<img loading="lazy" src="images/49561a07-b29a-495d-85c1-1f0a5eaa7b50.png" alt="image.png"  />

<img loading="lazy" src="images/edad8e72-7418-4e04-a1e8-d864089d7d01.png" alt="image.png"  />

<img loading="lazy" src="images/2e5a61c4-5d1b-4695-8dff-1dc32f7ede42.png" alt="image.png"  />
</p>
<h3 id="3数据转换">3、数据转换<a hidden class="anchor" aria-hidden="true" href="#3数据转换">#</a></h3>
<h5 id="进入开放原子开源活动贡献榜项目的src目录">进入“开放原子开源活动贡献榜”项目的“src”目录<a hidden class="anchor" aria-hidden="true" href="#进入开放原子开源活动贡献榜项目的src目录">#</a></h5>
<p><img loading="lazy" src="images/356aa536-9d7c-45f4-bc4f-413881f7cbda.png" alt="image.png"  />
</p>
<h5 id="在src目录下打开终端">在“src”目录下，打开终端<a hidden class="anchor" aria-hidden="true" href="#在src目录下打开终端">#</a></h5>
<p><img loading="lazy" src="images/12719c31-80d2-487a-be8d-1698e3ea3545.png" alt="image.png"  />
</p>
<h5 id="安装python-项目的依赖包pandas">安装python 项目的依赖包：pandas<a hidden class="anchor" aria-hidden="true" href="#安装python-项目的依赖包pandas">#</a></h5>
<p><code>pip install pandas</code>
<img loading="lazy" src="images/6d29c8e7-3fc2-4b4b-92ff-13e7bfff6208.png" alt="image.png"  />
</p>
<h5 id="执行命令python3-convertpy">执行命令<code>python3 .\convert.py</code><a hidden class="anchor" aria-hidden="true" href="#执行命令python3-convertpy">#</a></h5>
<h3 id="4项目test--build">4、项目test &amp; build<a hidden class="anchor" aria-hidden="true" href="#4项目test--build">#</a></h3>
<p>1） test</p>
<p>进入“开放原子开源活动贡献榜”根目录，并且打开终端</p>
<blockquote>
<p>注意，以下操作都在 <code>master分支</code>操作。</p>
</blockquote>
<ul>
<li>安装 Nodejs 的 NPM 包依赖，执行下面命令</li>
</ul>
<p><code>npm install</code></p>
<ul>
<li>上线前本地查看数据和站点的渲染，执行命令</li>
</ul>
<blockquote>
<p>用于在开发模式下运行应用。 打开 http://localhost:3000 在浏览器中查看。如果你进行了编辑，页面将重新加载。 你还将在控制台中看到任何 lint 错误。</p>
</blockquote>
<p><code>npm start</code></p>
<p><img loading="lazy" src="images/79142747-9fb0-4f0d-8d88-6057e65bc0d5.png" alt="image.png"  />
</p>
<p>2） 推送到 master 分支</p>
<blockquote>
<p>此时从本地看数据和页面如果都没有什么问题，那么可以先推送到 master 分支。</p>
</blockquote>
<p>这里推荐两种操作方式二选一。</p>
<p><strong>方式一：用 OpenLinkSaaS 操作</strong></p>
<ul>
<li>
<p>添加并提交有变化的文件
<img loading="lazy" src="images/d4990d32-8315-47d2-a8b9-ba3d86b3cf8a.png" alt="image.png"  />
</p>
</li>
<li>
<p>把提交了变更的数据推送到 AtomGit 远端仓库
<img loading="lazy" src="images/93dd52c6-e86f-43e5-8e75-111e5f38a86a.png" alt="image.png"  />
</p>
</li>
<li>
<p>检查更新成功
<img loading="lazy" src="images/2700ec4f-acdb-44eb-8609-44b047987a0b.png" alt="image.png"  />

<img loading="lazy" src="images/73baa369-8219-48d2-bbd6-022dbbd09877.png" alt="image.png"  />
</p>
</li>
</ul>
<p><strong>方式二：用 Git 命令操纵</strong></p>
<p>分别执行命令</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">git add ./
</span></span><span class="line"><span class="cl">git commit -m <span class="s1">&#39;更新说明&#39;</span>
</span></span><span class="line"><span class="cl">git push 
</span></span></code></pre></div><p>3） build</p>
<ul>
<li><code>npm run build</code>，此时会产生的静态文件都将会在 &ldquo;build目录&quot;中。</li>
</ul>
<p>4） 切换到<code>build分支</code>，执行静态文件编译</p>
<blockquote>
<p>从此处开始，操作都将会在<code>build 分支</code>操作。</p>
</blockquote>
<p>4-1）这里推荐两种操作方式二选一。</p>
<p><strong>方式一：用 OpenLinkSaaS 操作</strong>
<img loading="lazy" src="images/1e989180-4457-4ba3-9ee8-547689ee427d.png" alt="image.png"  />
</p>
<ul>
<li>接着手动删除“build目录”和“.gitignore”文件之外的所有文件。</li>
<li>手动把“build目录”里面的<code>所有</code>内容都移动到“build目录”之外，也就是和“build目录”同级别。再把“build目录”删除。
<img loading="lazy" src="images/65a58a59-2284-4d8a-9fec-33dc35831bc8.png" alt="17dd5850df728b8e0743967d8a372f8.png"  />
</li>
</ul>
<p>推送到远端 AtomGit 上的 build 分支</p>
<ul>
<li>
<p>添加&amp;提交
<img loading="lazy" src="images/7cf5ae54-4155-414b-b0fc-60db1cc7de24.png" alt="image.png"  />
</p>
</li>
<li>
<p>把提交了变更的数据推送到 AtomGit 远端仓库
<img loading="lazy" src="images/eb967015-1d4d-4546-9c0f-70e975c7b8c6.png" alt="image.png"  />

<img loading="lazy" src="images/97f6f780-8440-44ce-b302-bbfad742a28c.png" alt="image.png"  />
</p>
</li>
<li>
<p>检查更新成功
<img loading="lazy" src="images/33ee0bc8-5a7c-448d-bbe1-df00961452b6.png" alt="image.png"  />
</p>
</li>
</ul>
<p><strong>方式二：用 Git 命令操作</strong></p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">git checkout build
</span></span></code></pre></div><ul>
<li>接着手动删除“build目录”和“.gitignore”文件之外的所有文件。</li>
<li>手动把“build目录”里面的<code>所有</code>内容都移动到“build目录”之外，也就是和“build目录”同级别。再把“build目录”删除。
<img loading="lazy" src="images/65a58a59-2284-4d8a-9fec-33dc35831bc8.png" alt="17dd5850df728b8e0743967d8a372f8.png"  />
</li>
</ul>
<p>推送到远端 AtomGit 上的build 分支</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">git add .
</span></span><span class="line"><span class="cl">git commit -m <span class="s1">&#39;更新说明&#39;</span>
</span></span><span class="line"><span class="cl">git push
</span></span></code></pre></div><ul>
<li>检查更新成功
<img loading="lazy" src="images/33ee0bc8-5a7c-448d-bbe1-df00961452b6.png" alt="image.png"  />
</li>
</ul>
<h3 id="5访问远端仓库地址查看更新">5、访问远端仓库地址查看更新<a hidden class="anchor" aria-hidden="true" href="#5访问远端仓库地址查看更新">#</a></h3>
<ul>
<li>访问仓库地址，查看是否更新了数据。</li>
<li>如果没有请进入仓库的“设置”-&gt;&ldquo;Pages&rdquo;,手动点击下“保存”按钮，将会更快的刷新最新的数据。如下图。
<img loading="lazy" src="images/045cfe94-1fcc-4b11-8439-922acc42fde1.png" alt="b755add1ec515c4a77aeacbebb1a8ea.png"  />
。</li>
</ul>
<hr>
<p>以上。</p>


  </div>

  <footer class="post-footer">
    <ul class="post-tags">
    </ul>
<nav class="paginav">
  <a class="prev" href="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/papermod-installation/">
    <span class="title">« Prev</span>
    <br>
    <span>Install / Update PaperMod</span>
  </a>
  <a class="next" href="https://pagesorg.atomgit.net/atomgit-blog/posts/papermod/papermod-features/">
    <span class="title">Next »</span>
    <br>
    <span>Features / Mods</span>
  </a>
</nav>


<ul class="share-buttons">
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on x"
            href="https://x.com/intent/tweet/?text=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b&amp;url=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f&amp;hashtags=">
            <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
                <path
                    d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on linkedin"
            href="https://www.linkedin.com/shareArticle?mini=true&amp;url=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f&amp;title=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b&amp;summary=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b&amp;source=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f">
            <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
                <path
                    d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on reddit"
            href="https://reddit.com/submit?url=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f&title=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b">
            <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
                <path
                    d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on facebook"
            href="https://facebook.com/sharer/sharer.php?u=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f">
            <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
                <path
                    d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on whatsapp"
            href="https://api.whatsapp.com/send?text=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b%20-%20https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f">
            <svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
                <path
                    d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on telegram"
            href="https://telegram.me/share/url?text=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b&amp;url=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f">
            <svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
                <path
                    d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
            </svg>
        </a>
    </li>
    <li>
        <a target="_blank" rel="noopener noreferrer" aria-label="share 开放原子开源活动贡献榜开源项目协作教程 on ycombinator"
            href="https://news.ycombinator.com/submitlink?t=%e5%bc%80%e6%94%be%e5%8e%9f%e5%ad%90%e5%bc%80%e6%ba%90%e6%b4%bb%e5%8a%a8%e8%b4%a1%e7%8c%ae%e6%a6%9c%e5%bc%80%e6%ba%90%e9%a1%b9%e7%9b%ae%e5%8d%8f%e4%bd%9c%e6%95%99%e7%a8%8b&u=https%3a%2f%2fpagesorg.atomgit.net%2fatomgit-blog%2fposts%2fpapermod%2fopen-atom-contributor-leaderboard%2f">
            <svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
                xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
                <path
                    d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
            </svg>
        </a>
    </li>
</ul>

  </footer>
</article>
    </main>
    
<footer class="footer">
        <span>© <a href="https://atomgit.com/kyle">Kyle</a></span> · 

    <span>
        Powered by
        <a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
        <a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
    </span>
</footer>
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
        <path d="M12 6H0l6-6z" />
    </svg>
</a>

<script>
    let menu = document.getElementById('menu')
    if (menu) {
        menu.scrollLeft = localStorage.getItem("menu-scroll-position");
        menu.onscroll = function () {
            localStorage.setItem("menu-scroll-position", menu.scrollLeft);
        }
    }

    document.querySelectorAll('a[href^="#"]').forEach(anchor => {
        anchor.addEventListener("click", function (e) {
            e.preventDefault();
            var id = this.getAttribute("href").substr(1);
            if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
                    behavior: "smooth"
                });
            } else {
                document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
            }
            if (id === "top") {
                history.replaceState(null, null, " ");
            } else {
                history.pushState(null, null, `#${id}`);
            }
        });
    });

</script>
<script>
    var mybutton = document.getElementById("top-link");
    window.onscroll = function () {
        if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
            mybutton.style.visibility = "visible";
            mybutton.style.opacity = "1";
        } else {
            mybutton.style.visibility = "hidden";
            mybutton.style.opacity = "0";
        }
    };

</script>
<script>
    document.getElementById("theme-toggle").addEventListener("click", () => {
        if (document.body.className.includes("dark")) {
            document.body.classList.remove('dark');
            localStorage.setItem("pref-theme", 'light');
        } else {
            document.body.classList.add('dark');
            localStorage.setItem("pref-theme", 'dark');
        }
    })

</script>
<script>
    document.querySelectorAll('pre > code').forEach((codeblock) => {
        const container = codeblock.parentNode.parentNode;

        const copybutton = document.createElement('button');
        copybutton.classList.add('copy-code');
        copybutton.innerHTML = 'copy';

        function copyingDone() {
            copybutton.innerHTML = 'copied!';
            setTimeout(() => {
                copybutton.innerHTML = 'copy';
            }, 2000);
        }

        copybutton.addEventListener('click', (cb) => {
            if ('clipboard' in navigator) {
                navigator.clipboard.writeText(codeblock.textContent);
                copyingDone();
                return;
            }

            const range = document.createRange();
            range.selectNodeContents(codeblock);
            const selection = window.getSelection();
            selection.removeAllRanges();
            selection.addRange(range);
            try {
                document.execCommand('copy');
                copyingDone();
            } catch (e) { };
            selection.removeRange(range);
        });

        if (container.classList.contains("highlight")) {
            container.appendChild(copybutton);
        } else if (container.parentNode.firstChild == container) {
            
        } else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
            
            codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
        } else {
            
            codeblock.parentNode.appendChild(copybutton);
        }
    });
</script>
</body>

</html>
